using System;
using System.Collections.Generic;
using System.Text;
using Iesi.Collections.Generic;
using ClimbTracker.BusinessLogic.Interface;

namespace ClimbTracker.BusinessLogic.Entities
{
    public class Competition : Startable, Reportable
    {
        public Competition(String name)
        {
        }

        public Competition(string name, List<Competitor> competitors, List<Route> routes)
        {
        }

        public Competition()
        {
        }


        #region Memebers

        private ISet<Competitor> _competitors = new HashedSet<Competitor>();
        private ISet<Route> _routes = new HashedSet<Route>();
        private ISet<ClimbAttempt> _climbAttempts = new HashedSet<ClimbAttempt>();
        private string _name;
        private string _description;
        private int _competitionID;

        #endregion


        public virtual ISet<Competitor> Competitors
        {
            get { return _competitors; }
            set { _competitors = value; }
        }

        public virtual ISet<Route> Routes
        {
            get { return _routes; }
            set { _routes = value; }
        }

        public virtual ISet<ClimbAttempt> ClimbAttempts
        {
            get { return _climbAttempts; }
            set { _climbAttempts = value; }
        }

        public virtual string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public virtual string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        public virtual int CompetitionID
        {
            get { return _competitionID; }
            set { _competitionID = value; }
        }



        #region Startable Members

        public void start()
        {
        }

        public void pause()
        {
        }

        public void stop()
        {
        }

        #endregion

        #region Reportable Members

        public void createReport()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
}
